package com.great.codewars;

/**
 * 最大子阵列和
 * 这道题目主要用到了贪心算法，每次都将数组中的元素加到一个临时变量中去，再与最大和进行比较，大则置换最大和的值，否则继续加，当临时和小于0.这时应置和为0。
 * 
 * @author think
 *
 */
public class MaximumSubarraySum {
	public static int sequence(int[] arr) {
		int m = 0, a = 0, s = 0;
		for (int e : arr) {
			s += e;
			System.out.println("s=" + s);
			m = Math.min(s, m);
			System.out.println("m=" + m);
			a = Math.max(a, s - m);
			System.out.println("a=" + a);
		}
		return a;
	}

	public static void main(String[] args) {
		// 0
		int sequence = MaximumSubarraySum.sequence(new int[] {});
		System.out.println(sequence);
		// 6
		int sequence2 = MaximumSubarraySum.sequence(new int[] { -2, 1, -3, 4, -1, 2, 1, -5, 4 });
		System.out.println(sequence2);
	}
}
